package com.example.xmppchatter;

import java.util.ArrayList;

import listViewDataStructures.Conversation;

import com.example.xmppchatter.R;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Custom Adapter per popolare la ListView delle conversazioni. Estende la classe BaseAdapter.
 * @author giulio
 */
public class AdapterConversationListView extends BaseAdapter {
	
	private Context context;
	private ArrayList<Conversation> data;
		
	/**
	 * Costruttore del Custom Adapter.
	 * @param context - oggetto Context dell'activiy che contiene la lista.
	 * @param data - il riferimento ai dati da inserire nella lista.
	 */
	public AdapterConversationListView(Context context, ArrayList<Conversation> data) {
		this.context = context;
		this.data = data;		
	}

	@Override
	public int getCount() {
		return data.size();
	}

	@Override
	public Object getItem(int position) {
		return data.get(position); // FIXME
	}

	@Override
	public long getItemId(int position) {
		// Non implementato
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		View view = convertView;
		
		// imposta il layout della view
		LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		
		// imposta il layout della ListView
		if (convertView == null)
			view = inflater.inflate(R.layout.row_conversation_list, null);
		
		// recupero le TextView della lista
		TextView remoteUser  = (TextView)  view.findViewById(R.id.textview_remote_user);
		TextView lastMessage = (TextView)  view.findViewById(R.id.textview_last_msg);
		TextView dateAndTime = (TextView)  view.findViewById(R.id.textview_date_and_time);
		ImageView 	  notify = (ImageView) view.findViewById(R.id.notify);
		
		
		Conversation conv = data.get(position);
		
		String lastMsgText = conv.getBody();
		
		// Setta i valori nei rispettivi campi
		 remoteUser.setText(conv.getRemoteUserName());
		lastMessage.setText(lastMsgText);
		dateAndTime.setText(conv.getTimestamp());
		
		// Se questa conversazione ha dei nuovi messaggi che non sono ancora stati letti, imposta il layout in modo opportuno
		if (conv.getIsNew()) {
			lastMessage.setTypeface(Typeface.DEFAULT_BOLD);
			notify.setVisibility(View.VISIBLE);
		} else {
			lastMessage.setTypeface(Typeface.DEFAULT);
			notify.setVisibility(View.INVISIBLE);
		}
		
		return view;
	}

}
